ELBのアクセスログを可視化し、超絶手軽に分析する[QuickSight,Athena]
コンニチは、千葉です。
QuickSightとAthenaを使って、色々な視点からELBのログを分析してみました。
SQLをガンガンかける人は、Athenaのみで完結する場合もあるかもしれませんが、グラフで直感的に見るメリットもあると思います。
準備
手順サマリです。以下でやっていきます。
- AthenaにてELBログテーブルを作成する
- QuickSightにて、データセットを作成する
- QuickSightにて分析する
AthenaにてELBログ用のテーブルを作成する
Amazon AthenaでELBログをSQLで解析する #reinvent こちらのエントリを参考に、Athenaにテーブルを作成します。
QuickSightにて、データセットを作成する
マネージメントコンソールからQuickSightへ移動し、[New Analyze]から[New DataSet]で新しいデータセットを指定します。
データソースにAthenaを選択します。
データソース名を入力します。
※権限が足りない場合は、QuickSightに対してAthenaと上で作ったS3バケットに対するアクセス権限がない人です。右上の人型のアイコンから[Mange QuickSight]を選択してAthenaとS3の権限を追加します。
対象のELBログテーブルを選択します。
QuickSightで利用するバックエンドを指定します。今回は、SPICEを選択しました。
SPICEを選択した場合、データはSPICEにインポートされます。インメモリのため、高速ですがデータ容量を気にする必要があります。また、クエリを何回投げても料金を気にしなくて良いです。
Athenaを選択した場合は、S3上のデータにクエリを発行します。SPICEほど早くないですが、S3上のデータにクエリが投げられるのでニアリアルタイムに分析できます。こちらは、Athenaの利用料金を気にする必要があります。
※もし、取り込むデータ量が多い場合は必要なデータだけ抜き出してインポートしたり、SPICEの容量を見直しする必要があります ※参考:Amazon Athena のクエリ結果を SPICE にインポートして、 QuickSight で可視化する
[TIPS] ELB のアクセスログのタイムスタンプを QuickSight で Date タイプとして利用するを参考にして、タイムスタンプをdate型で利用します。
下記でdate型の計算フィールドを作成できました。
parseDate(replace(left({request_timestamp}, 19), 'T', ' '), "yyyy-MM-dd HH:mm:ss")
QuickSightにて分析する
さっそくグラフを作ってみました。
時間単位での集計
時間、日、月、年単位での表示変更ができます。
表示したい期間を絞る
フィルタを作成することで、表示したい期間を指定できます。
下部のバーからも、表示期間などを変えられます。
レスポンスタイムが大きいURL
レスポンスタイムが大きいURLを特定してみます。
このグラフからは、時間がかかっているリクエストはないことがわかりました。
ユーザーエジェントの種類と割合
ユーザーエージェントの割合を見てみます。
サンプルでは、同じ割合でアクセスがあることがわかりました。
エラーコードと時間帯
ある時間帯で、障害などでどれくらい影響あったかを確認できます。 また、フィルタを使うことで特定のステータスコードだけ表示することもできます。
アクセスが多いIP
とある時間帯に、特定のIPから攻撃を受けていないか確認できます。
特定IPからの大量のアクセスがないことがわかりました。
アクセスが多い時間帯
アクセス数の分析です。
ここから、時間帯によってアクセスパターンがありそうだなということがわかります。
最後に
今までELBのログを確認しようとした場合、ローカルにダウンロードするとか独自にへ投入するとか必要でした。今はAthenaの登場により、S3上のデータに直接クエリを投げらるようになり、さらにQuickSightで可視化できるようになりました。今回は、ELBのちょっとした分析に使ってみましたが、初めて使う場合でも学習コストがかなり低く利用できるのはかなりメリットが大きいんじゃないかなと思います。サーバーレスなので、サーバの運用を考えなくてもいいですし。